<?php
	/**
	 * Clase abstracta para el modelo.
	 */
	abstract class ModeloAbstracto
    {
    	private static $servidor = "localhost";
		private static $usuario = "root";
		private static $password = "";
		protected $baseDeDatos = "TestPOO";
		protected $sqlQuery = "";
		private $conexion;
		
		#Métodos abstractos para clases que hereden.
		abstract protected function seleccionar();
		abstract protected function insertar();
		abstract protected function actualizar();
		abstract protected function eliminar();
		
		/**
		 * Abre una nueva conexión.
		 */
		private function abrirConexion()
		{
			$this->conexion = mysql_connect(self::$servidor, self::$usuario, self::$password) or die("Error al conectar - " . mysql_error());
			mysql_select_db($this->baseDeDatos, $this->conexion);
			mysql_query("SET NAMES 'utf8';");
		}
		
		/**
		 * Cierra una conexión.
		 */
		private function cerrarConexion()
		{
			mysql_close() or die("Error al desconectar - " . mysql_error());
		}
		
		/**
		 * Ejecuta una consulta.
		 */
		protected function ejecutaConsulta()
		{
			$this->abrirConexion();
			$resultado = mysql_query($this->sqlQuery) or die("Error al ejecutar consulta - " . mysql_error());
			
			if($resultado)
			{
				if(strtoupper(substr($this->sqlQuery, 0, 6)) == "INSERT")
				{
					return true;
				}
				
				while($fila[] = mysql_fetch_row($resultado));
			
				$this->cerrarConexion();
				mysql_free_result($resultado)  or die("Error al liberar registros - " . mysql_error());
				
				return $fila;
			}
			else
			{
				return false;
			}
		}
    }
?>
